return {
    'nvim-telescope/telescope-project.nvim',
    dependencies = {
        'ThePrimeagen/harpoon', {
            'nvim-telescope/telescope-file-browser.nvim',
            dependencies = {
                'nvim-telescope/telescope.nvim', 'nvim-lua/plenary.nvim'
            }
        }, {
            'ahmedkhalf/project.nvim',
            config = function()
                -- lua
                require('nvim-tree').setup {
                    sync_root_with_cwd = true,
                    respect_buf_cwd = true,
                    update_focused_file = {enable = true, update_root = true}
                }
                require('project_nvim').setup {
                    -- Manual mode doesn't automatically change your root directory, so you have
                    -- the option to manually do so using `:ProjectRoot` command.
                    manual_mode = false,

                    -- Methods of detecting the root directory. **"lsp"** uses the native neovim
                    -- lsp, while **"pattern"** uses vim-rooter like glob pattern matching. Here
                    -- order matters: if one is not detected, the other is used as fallback. You
                    -- can also delete or rearangne the detection methods.
                    detection_methods = {'lsp', 'pattern'},

                    -- All the patterns used to detect root dir, when **"pattern"** is in
                    -- detection_methods
                    patterns = {
                        '.git', '_darcs', '.hg', '.bzr', '.svn', 'Makefile',
                        'package.json'
                    },

                    -- Table of lsp clients to ignore by name
                    -- eg: { "efm", ... }
                    ignore_lsp = {},

                    -- Don't calculate root dir on specific directories
                    -- Ex: { "~/.cargo/*", ... }
                    exclude_dirs = {},

                    -- Show hidden files in telescope
                    show_hidden = false,

                    -- When set to false, you will get a message when project.nvim changes your
                    -- directory.
                    silent_chdir = true,

                    -- What scope to change the directory, valid options are
                    -- * global (default)
                    -- * tab
                    -- * win
                    scope_chdir = 'global',

                    -- Path where project.nvim will store the project history for use in
                    -- telescope
                    datapath = vim.fn.stdpath 'data'
                }
                require('telescope').load_extension 'projects'
            end
        }
    },
    config = function()
        require('telescope').load_extension 'project'
        vim.api.nvim_set_keymap('n', '<C-p>',
                                ':lua require\'telescope\'.extensions.project.project{}<CR>',
                                {noremap = true, silent = true})
        local project_actions = require 'telescope._extensions.project.actions'
        require('telescope').setup {
            extensions = {
                project = {
                    base_dirs = {
                        vim.fn.stdpath 'data', vim.fn.stdpath 'config'
                        -- '~/AppData/Local/nvim',
                    },
                    hidden_files = true, -- default: false
                    theme = 'dropdown',
                    order_by = 'asc',
                    search_by = 'title',
                    sync_with_nvim_tree = true, -- default false
                    -- default for on_project_selected = find project files
                    on_project_selected = function(prompt_bufnr)
                        -- Do anything you want in here. For example:
                        project_actions.change_working_directory(prompt_bufnr,
                                                                 false)
                        require('harpoon.ui').nav_file(1)
                    end
                }
            }
        }
    end,
    keymaps = {
        -- {
        -- 	'n',
        -- 	'<Space>p',
        -- 	'<cmd>Telescope project<cr>',
        -- 	opt = { noremap = true, silent = true, desc = '列出工程项目' },
        -- },
        {
            'n',
            '<m-p>',
            function()
                require('telescope').extensions.project.project {}
            end,
            opt = {noremap = true, silent = true}
        }
    }
}
